HAL MMC interrupt handler and callbacks

This section provides information about the HAL MMC IRQ_Handler and Callbacks functions migration.

HAL MMC interrupt request handler

HAL1

HAL2

void HAL_MMC_IRQHandler(MMC_HandleTypeDef *hmmc)
void HAL_MMC_IRQHandler(hal_mmc_handle_t *hmmc)

HAL MMC callbacks

HAL1

HAL2

void HAL_MMC_TxCpltCallback(MMC_HandleTypeDef *hmmc)
void HAL_MMC_RxCpltCallback(MMC_HandleTypeDef *hmmc)
void HAL_MMCEx_Read_DMALnkLstBufCpltCallback(MMC_HandleTypeDef *hmmc)
void HAL_MMCEx_Write_DMALnkLstBufCpltCallback(MMC_HandleTypeDef *hmmc)

void HAL_MMC_ErrorCallback(MMC_HandleTypeDef *hmmc)

void HAL_MMC_AbortCallback(MMC_HandleTypeDef *hmmc)
void HAL_MMC_XferCpltCallback(hal_mmc_handle_t *hmmc,
                              hal_mmc_event_cb_t cb_event)




void HAL_MMC_ErrorCallback(hal_mmc_handle_t *hmmc)

void HAL_MMC_AbortCallback(hal_mmc_handle_t *hmmc)

HAL MMC DMA linked-list callback macro aliases

HAL1

HAL2

#define HAL_MMCx_DMALinkedList_ReadCpltCallback
#define HAL_MMCx_DMALinkedList_WriteCpltCallback

Removed; use HAL_MMC_XferCpltCallback() instead.

Note

  • In HAL1, these extended API callbacks are simple aliases to HAL_MMC_TxCpltCallback() and HAL_MMC_RxCpltCallback() respectively.

  • In HAL2, use HAL_MMC_XferCpltCallback() with the event type parameter set to either HAL_MMC_EVENT_CB_TX_CPLT or HAL_MMC_EVENT_CB_RX_CPLT to distinguish between transfer directions.


HAL MMC DMA multi-buffer callbacks

HAL1

HAL2

void HAL_MMCEx_Read_DMADoubleBuf0CpltCallback(MMC_HandleTypeDef *hmmc)
void HAL_MMCEx_Read_DMADoubleBuf1CpltCallback(MMC_HandleTypeDef *hmmc)
void HAL_MMCEx_Write_DMADoubleBuf0CpltCallback(MMC_HandleTypeDef *hmmc)
void HAL_MMCEx_Write_DMADoubleBuf1CpltCallback(MMC_HandleTypeDef *hmmc)

Multi-buffering is available only in some STM32 series. These series are not yet supported in HAL2.


HAL MMC register callbacks

HAL1

HAL2

In HAL1, the function HAL_MMC_RegisterCallback is used to register MMC callbacks using a single function with a specific callback ID.

In HAL2, separate functions are available to register each specific MMC callback. The MSP init and deinit callbacks are removed; users must handle hardware initialization and deinitialization manually, refer to Initialization and de-initialization seuquence for more details.

Examples to migrating the callbacks registration

HAL1

HAL2

HAL_MMC_RegisterCallback(hmmc,
                       HAL_MMC_TX_CPLT_CB_ID,
                       USER_MMC_TxCpltCallback)

HAL_MMC_RegisterCallback(hmmc,
                       HAL_MMC_RX_CPLT_CB_ID,
                       USER_MMC_RxCpltCallback)

HAL_MMC_RegisterCallback(hmmc,
        HAL_MMC_READ_DMA_LNKLST_BUF_CPLT_CB_ID,
        USER_MMC_ReadDMALnkLstBufCpltCallback)

HAL_MMC_RegisterCallback(hmmc,
       HAL_MMC_WRITE_DMA_LNKLST_BUF_CPLT_CB_ID,
       USER_MMC_WriteDMALnkLstBufCpltCallback)
HAL_MMC_RegisterXferCpltCallback(hmmc,
                        USER_MMC_XferCpltCallback)

Note

One event callback function handles all transfer complete events with an additional parameter to specify the event type. Refer to HAL MMC transfer use case example usage.

HAL_MMC_RegisterCallback(hmmc,
                        HAL_MMC_ERROR_CB_ID,
                        USER_MMC_ErrorCallback)
HAL_MMC_RegisterErrorCallback(hmmc,
                        USER_MMC_ErrorCallback)
HAL_MMC_RegisterCallback(hmmc,
                        HAL_MMC_ABORT_CB_ID,
                        USER_MMC_AbortCallback)
HAL_MMC_RegisterAbortCallback(hmmc,
                        USER_MMC_AbortCallback)
HAL_MMC_RegisterCallback(hmmc,
          HAL_MMC_READ_DMA_DBL_BUF0_CPLT_CB_ID,
          USER_MMC_ReadDMADblBuf0CpltCallback)

HAL_MMC_RegisterCallback(hmmc,
          HAL_MMC_READ_DMA_DBL_BUF1_CPLT_CB_ID,
          USER_MMC_ReadDMADblBuf1CpltCallback)

HAL_MMC_RegisterCallback(hmmc,
         HAL_MMC_WRITE_DMA_DBL_BUF0_CPLT_CB_ID,
         USER_MMC_WriteDMADblBuf0CpltCallback)

HAL_MMC_RegisterCallback(hmmc,
         HAL_MMC_WRITE_DMA_DBL_BUF1_CPLT_CB_ID,
         USER_MMC_WriteDMADblBuf1CpltCallback)

Multi-buffering is available only in some STM32 series. These series are not yet supported in HAL2.

HAL_MMC_RegisterCallback(hmmc,
                    HAL_MMC_MSP_DEINIT_CB_ID,
                    USER_MMC_MspDeInitCallback)

HAL_MMC_RegisterCallback(hmmc,
                      HAL_MMC_MSP_INIT_CB_ID,
                      USER_MMC_MspInitCallback)

Removed; The MSP init and deinit callbacks are removed. Users must handle hardware initialization and deinitialization in application code. Refer to Initialization and de-initialization seuquence for more details.


HAL MMC unregister callbacks

HAL1

HAL2

In HAL1, the function HAL_MMC_UnRegisterCallback is used to unregister MMC callbacks using a single function with a specific callback ID.

In HAL2, unregister APIs are removed, user can simply register the default weak callback using the HAL MMC register callback APIs.

Examples to migrating the callbacks registration

HAL1

HAL2

HAL_MMC_UnRegisterCallback(hmmc,
                       HAL_MMC_TX_CPLT_CB_ID,
                       USER_MMC_TxCpltCallback)

HAL_MMC_UnRegisterCallback(hmmc,
                       HAL_MMC_RX_CPLT_CB_ID,
                       USER_MMC_RxCpltCallback)

HAL_MMC_UnRegisterCallback(hmmc,
        HAL_MMC_READ_DMA_LNKLST_BUF_CPLT_CB_ID,
        USER_MMC_ReadDMALnkLstBufCpltCallback)

HAL_MMC_UnRegisterCallback(hmmc,
       HAL_MMC_WRITE_DMA_LNKLST_BUF_CPLT_CB_ID,
       USER_MMC_WriteDMALnkLstBufCpltCallback)
HAL_MMC_RegisterXferCpltCallback(hmmc,
                        HAL_MMC_XferCpltCallback)

Note

One event callback function handles all transfer complete events with an additional parameter to specify the event type. Refer to HAL MMC transfer use case example usage.

HAL_MMC_UnRegisterCallback(hmmc,
                        HAL_MMC_ERROR_CB_ID,
                        USER_MMC_ErrorCallback)
HAL_MMC_RegisterErrorCallback(hmmc,
                        HAL_MMC_ErrorCallback)
HAL_MMC_UnRegisterCallback(hmmc,
                        HAL_MMC_ABORT_CB_ID,
                        USER_MMC_AbortCallback)
HAL_MMC_RegisterAbortCallback(hmmc,
                        HAL_MMC_AbortCallback)
HAL_MMC_UnRegisterCallback(hmmc,
          HAL_MMC_READ_DMA_DBL_BUF0_CPLT_CB_ID,
          USER_MMC_ReadDMADblBuf0CpltCallback)

HAL_MMC_UnRegisterCallback(hmmc,
          HAL_MMC_READ_DMA_DBL_BUF1_CPLT_CB_ID,
          USER_MMC_ReadDMADblBuf1CpltCallback)

HAL_MMC_UnRegisterCallback(hmmc,
         HAL_MMC_WRITE_DMA_DBL_BUF0_CPLT_CB_ID,
         USER_MMC_WriteDMADblBuf0CpltCallback)

HAL_MMC_UnRegisterCallback(hmmc,
         HAL_MMC_WRITE_DMA_DBL_BUF1_CPLT_CB_ID,
         USER_MMC_WriteDMADblBuf1CpltCallback)

Multi-buffering is available only in some STM32 series. These series are not yet supported in HAL2.

HAL_MMC_UnRegisterCallback(hmmc,
                    HAL_MMC_MSP_DEINIT_CB_ID,
                    USER_MMC_MspDeInitCallback)

HAL_MMC_UnRegisterCallback(hmmc,
                      HAL_MMC_MSP_INIT_CB_ID,
                      USER_MMC_MspInitCallback)

Removed; The MSP init and deinit callbacks are removed. Users must handle hardware initialization and deinitialization in application code. Refer to Initialization and de-initialization seuquence for more details.

Related concepts: